Appearance
结构化建模,即数据流图和R图,当然UML(用例图、类图、序列图等)也需要掌握,如果超纲那就多研究,多做历年案例题,掌握超纲题技巧。
综合那里的笔记应该是有很大问题,架构师-备考 软件工程-需求工程 这一章看起来内容也没对上,有空整理一下了。
结构化三大模型

功能模型(数据流图)
功能、过程、数据流动路径
DFD 典型特征(一眼认出):必有箭头(数据在移动)、必有加工(动词命名:验证、计算、查询)、不会出现条件判断(没有菱形,没有“是/否”分支)、不会出现状态(不会写“空闲/忙碌”)、数据存储只会被箭头连(不画字段细节)

行为模型(状态转换图)
状态、事件、状态转换
最基础的形状(3个符号)
| 符号 | 名称 | 说明 |
|---|---|---|
| 圆角矩形 | 状态 | 系统在某个时刻的样子(形容词/名词) |
| 箭头 | 转换 | 从一个状态到另一个状态 |
| 箭头上文字 | 事件/条件 | 什么事触发了这个变化(格式:事件 [条件] / 动作) |
数据模型(E - R 图)
一般是数据建模的时候用,比如数据库的字段之类的
实体、属性、关系
静态(数据结构,不随时间变化)
数据字典
数据元素、结构、定义
静态定义(解释性)
面向对象的分析方法
UML 关系
- 依赖
- 关联
- 泛化
- 实现
- 组合
- 聚合

UML 图
- 用例图
- 类图
- 活动图
- 状态图

面向对象分析模型

练习题
练习题1
某现代农业种植基地为进一步提升农作物种植过程的智能化,欲开发智慧农业平台,集管理和销售于体,该平台的主要功能有:
- 1.信息维护。农业专家对农作物、环境等监测数据的监控处理规则进行维护。
- 2.数据采集。获取传感器上传的农作物长势、土壤墒情、气候等连续监测数据,解析后将监测信息进行数据处理、可视化和存储等操作。
- 3.数据处理。对实时监测信息根据监控处理规则进行监测分析,将分析结果进行可视化并进行存储、远程控制对历史监测信息进行综合统计和预测,将预测信息进行可视化和存储。
- 4.远程控制。根据监控处理规则对分析结果进行判定,依据判定结果自动对控制器进行远程控制。平台也可以根据农业人员提供的控制信息对控制器进行远程控制。
- 5.可视化。实时向农业人员展示监测信息:实时给农业专家展示统计分析结果和预测信息或根据农业专家请求进行展示。
现采用结构化方法对智慧农业平台进行分析与设计,获得如图所示的0层数据流图。

- 问题1(9分):请给出数据流图的定义及父图和子图数据守恒的三个原则
- 问题2(8分):根据描述,给出图中的E1-E4及D1-D4
- 问题3(8分):根据说明和图中术语,补充图中缺失的数据流及其起点和终点。
答案:
问题1:
数据流图,来说明系统所完成的功能。
父图和子图守恒原则:
- (1)父图中:子图的。
- (2)父图中:子图的所有。
- (3)子图内部的数据流必须与父图无关:。
问题2:
E1:传感器
E2:农业专家
E3:农业人员
E4:控制器
D1:监控处理规则表
D2:监测信息表
D3:分析结果表
D4:预测信息表
1.信息维护。对农作物、环境等监测数据的进行维护。
2.数据采集。获取上传的农作物长势、土壤墒情、气候等连续监测数据,解析后将监测信息进行数据处理、可视化和存储等操作。
3.数据处理。对实时监测信息根据监控处理规则进行监测分析,将分析结果进行可视化并进行存储、远程控制对历史监测信息进行综合统计和预测,将预测信息进行可视化和存储。
4.远程控制。根据监控处理规则对分析结果进行判定,依据判定结果自动对进行远程控制。平台也可以根据提供的控制信息对控制器进行远程控制。
5.可视化。实时向农业人员展示监测信息:实时给农业专家展示统计分析结果和预测信息或根据农业专家请求进行展示。
问题3:
| 数据流 | 起点 | 终点 |
|---|---|---|
| 规则 | D1 | P4 |
| 分析结果与预测信息 | P3 | P5 |
| 历史监测信息 | D2 | P3 |
| 请求 | E2 | P5 |
练习题2
设计一个电力风险管理系统的类图。该系统管理以下核心风险信息:
- 电网风险信息(GridNetRisk):涉及电网运行中的风险评估和监控。
- 基建风险信息(InfraRisk):涉及电力基础设施(如变电站、输电线路)的风险管理。
- 工作风险信息(WorkRisk):涉及现场作业安全和工作流程中的风险控制。
系统还提供风险分析功能(RiskAnalysis),并支持对分析结果的打印管理(PrintManager)和导出 Excel管理(ExportManager)。此外,系统包含一个通用警报类(GeneralAlarm)用于处理风险事件警报。所有风险信息通过一个主类(RiskManager)进行统一管理。
该系统类图如下图所示:

类名选项如下:
- a:WorkRisk
- b:GridNetRisk
- c:InfraRisk
- d:RiskAnalysis
- e:PrintManager
- f:ExportManager
- g:GeneralAlarm
- h: RiskManager
基于上述系统描述和类图,回答以下问题:
- 问题1:在类图中,从选项a ~ h中选择合适的类名填写16处空白位置。要求说明选择理由。
- 问题2:类与类之间存在哪些关系?请按照耦合度从高到低排序。并基于类图描述,找出类图中箭头与类关系对应错误的地方(至少一处),说明错误原因及正确关系。
- 问题3:UML中有哪些主要视图?这些视图分别由哪些UML图组成?
答案:
问题1:
- 1:a (WorkRisk)
- 2:c (InfraRisk)
- 3:b (GridNetRisk)
- 4:e (PrintManager)
- 5:f (ExportManager)
- 6:d (RiskAnalysis)
问题2:
类之间有六种关系,耦合度从高到低排序及定义如下:
- 实现。耦合度最高:实现类必须完全遵循接口的契约,接口的任何变更都会强制实现类修改。
- 泛化。高耦合:子类继承父类的实现细节,父类修改可能直接破坏子类功能。
- 组合。强依赖:部分对象的生命周期完全由整体对象控制(同生共死)。
- 聚合。中度耦合:部分对象可独立于整体对象存在,但仍有从属关系。
- 关联。低耦合:类间通过引用交互(如成员变量),但无生命周期依赖。
- 依赖。耦合度最低:临时性使用(如方法参数、局部变量),无长期引用。
类图中箭头与关系对应错误及原因:
- 错误位置:6(RiskAnalysis)到类 GeneralAlarm 的箭头表示泛化关系(继承)。
- 错误原因:系统描述中,GeneralAlarm是通用警报类,而RiskAnalysis是风险分析功能,两者无继承关系。RiskAnalysis应使用GeneralAlarm(依赖或关联),而不是继承它。题干中,GeneralAlarm处理风险事件警报,而RiskAnalysis负责分析逻辑,继承关系不符合职责分离原则(RiskAnalysis不是一种警报)。
- 正确关系:应改为关联关系。
问题3:
UML有五种视图,其与UML图对应关系如下:
- 逻辑视图:类图、对象图
- 实现视图:构件图、复合结构图
- 进程视图:时序图、活动图、状态图
- 部署视图:部署图
- 用例视图:用例图